package com.fr71.project.dm.service;

import com.fr71.framework.web.domain.AjaxResult;
import com.fr71.project.dm.domain.PdPluginErr;
import com.fr71.project.dm.domain.PdUser;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

public interface IPublicService {

    /**
     * 设置新的二级密码
     */
    AjaxResult setNewPsw(String sCode, String newPwd);
    
    /**
     * 授权查询
     * [uType] 0工具箱 1插件
     */
    AjaxResult checkAuth(String ip, Integer uType, String version);

    /**
     * 上报架设时长
     */
    AjaxResult uploadInstallTime(String ip, Long delayTime);

    /**
     * 领取体验卡
     */
    AjaxResult getTryScode(String code, String bindIp);
    
    /**
     * 根据安全码查询绑定的IP和到期时间
     */
    AjaxResult getSCodeInfo(String sCode);

    /**
     * 根据安全码换绑
     */
    AjaxResult changeBindIpBySCode(String newIp, String sCode, Integer type);

    /**
     * 前端用来获取商品列表数据
     */
    AjaxResult listPrice();

    AjaxResult uploadAsw(Object asw, Object aswTime, String ip);

    AjaxResult getHomeData(String ip);

    /**
     * 前端页面生成订单
     */
    AjaxResult createOrder(Map<String, Object> req);

    /**
     * 支付回调
     */
    String alipayResult(HashMap<String, String> map);

    /**
     * 支付回调
     */
    String ltzfResult(HashMap<String, String> map);

    /**
     * 微信支付回掉
     */
    String wxpayResult(String nonce, String signature, String timestamp, String serial, String body);

    /**
     * 获取订单状态
     */
    AjaxResult getOrderStatus(String orderId);

    /**
     * 获取版本号
     */
    AjaxResult getVersionInfos();

    /**
     * 更新版本信息
     */
    AjaxResult setVersionInfos(List<HashMap<String, Object>> list);

    /**
     * app端调用 获取版本信息
     */
    AjaxResult getVersionInfoByType(Integer type);

    /**
     * 部署服务端
     */
    AjaxResult doInstall(
        String ip,//架设的服务器IP，可能为手动输入的虚拟机ip
        String reqIp,//请求的IP，用来检查授权信息
        String serverName,//区组名称
        String lineBaseName,//线路名称
        Integer portAaa,//验证端口
        Integer lineNumber,//线路数量
        String mysqlPsw//数据库密码
    );

    /**
     * 生成快捷方式
     */
    AjaxResult getBat(
        String reqIp,
        String serverName,//区组名称
        Integer port//验证端口
    );

    /**
     * 获取公告
     */
    AjaxResult getNoticeList();

    /**
     * 更新公告
     */
    AjaxResult setNoticesList(List<HashMap<String, Object>> list);

    /**
     * app端调用 获取公告
     */
    AjaxResult getNoticeByType(Integer type);

    /**
     * 绑定QQ
     */
    AjaxResult bindQQ(String qq, Integer type, String reqIp);

    /**
     * 上报插件错误异常
     */
    AjaxResult postPluginErr(PdPluginErr pdPluginErr, String ip);

    /**
     * 上报事件
     */
    AjaxResult uploadEvent(java.util.HashMap<String, Object> data);

    /**
     * 根据qq查询绑定的工具箱或插件的有效期
     */
    String getInfoByQQ(String qq);

    /**
     * 使用QQ签到
     */
    String doSignByQQ(String qq);
}